
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.HashMap;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.SwingConstants;
import javax.swing.JSeparator;
import java.awt.Font;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import javax.swing.JComboBox;

/**
 * Fenêtre de recherche d'un auteur
 * Code du JFrame généré par Window Builder/Swing Designer.
 * @author IUT,  A.Benkherourou 
 * @version 1.0
 */
public class VueRechAuteur extends Vue {
	
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private JComboBox textFieldAuteur;
	private JTextArea textAreaInfosOuvrages;
	
	// pour que les boutons soient des attributs, il faut faire "convert local to field"
	private JButton buttonRech;
	private JButton buttonAnnuler;
	private JButton buttonFermer;
	
	
	
	
	public VueRechAuteur(Controleur controleur) {
		super(controleur);
		setTitle("Informations sur un Auteur");
		//setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
		setBounds(100, 100, 452, 515);
		contentPane = new JPanel();
		this.addWindowListener (new WindowAdapter() {
			public void windowClosing (WindowEvent e) {
			getControleur().fermerVue(VueRechAuteur.this);
			}
		});
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		
		buttonAnnuler = new JButton("Annuler");
		buttonAnnuler.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			getControleur().fermerVue(VueRechAuteur.this);}
		});
		buttonAnnuler.setBounds(115, 98, 107, 25);
		contentPane.add(buttonAnnuler);
		
		buttonRech = new JButton("Rechercher");
		buttonRech.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().rechAuteur((String)textFieldAuteur.getSelectedItem());
			}
		});
		buttonRech.setBounds(255, 98, 107, 25);
		contentPane.add(buttonRech);
		
		buttonFermer = new JButton("Fermer");
		buttonFermer.setEnabled(false);
		buttonFermer.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			getControleur().fermerVue(VueRechAuteur.this);}
		});
		buttonFermer.setBounds(183, 438, 107, 25);
		contentPane.add(buttonFermer);
		
		
		
		
		
		textFieldAuteur = new JComboBox();
		textFieldAuteur.setBounds(150, 70, 226, 20);
		contentPane.add(textFieldAuteur);
		textFieldAuteur.setEditable(true);
		
		JLabel lblAuteur = new JLabel("Auteur");
		lblAuteur.setHorizontalAlignment(SwingConstants.RIGHT);
		lblAuteur.setBounds(30, 70, 50, 20);
		contentPane.add(lblAuteur);
		
		
		
		
		
		JSeparator separator = new JSeparator();
		separator.setBounds(112, 284, 250, 2);
		contentPane.add(separator);
		
		
		JLabel lblNewLabel_2 = new JLabel("Ouvrages");
		lblNewLabel_2.setFont(new Font("Dialog", Font.BOLD | Font.ITALIC, 12));
		lblNewLabel_2.setBounds(197, 298, 107, 15);
		contentPane.add(lblNewLabel_2);
		
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBounds(29, 330, 399, 96);
		contentPane.add(scrollPane);
		
		textAreaInfosOuvrages = new JTextArea();
		textAreaInfosOuvrages.setEditable(false);
		scrollPane.setColumnHeaderView(textAreaInfosOuvrages);
		
		
	}
		
	
	public void alimenteAutName(HashMap<String, Auteur> auteurs)
	{
		textFieldAuteur.removeAllItems();
		if(auteurs != null)
		{
			for (String key : auteurs.keySet())
			{
				textFieldAuteur.addItem(key);
			}
		}
	}
	
	public void alimenteAutOuvrage(HashMap<String, Ouvrage> ouvrages)
	{
		textAreaInfosOuvrages.setText("");
		
		if(ouvrages!= null)
		{
			for(String key : ouvrages.keySet())
			{
				textAreaInfosOuvrages.append(ouvrages.get(key).getIsbn() + " - " + ouvrages.get(key).getTitre() + " - " + ouvrages.get(key).getEditeur() +"\n");
			}
		}

		buttonFermer.setEnabled(true);

	}
	
	
	
	public void setEtat (int etat){
		switch (etat) {
		case initiale: {
			buttonRech.setEnabled(true);
			buttonAnnuler.setEnabled(true);
			buttonFermer.setEnabled(false);
			break;
			}
		case finale: {
			buttonRech.setEnabled(false);
			buttonAnnuler.setEnabled(false);
			buttonFermer.setEnabled(true);
			break;
			}
		}
	}
}
 
		